package com.yazhou.util;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import java.io.*;

/**
 * 创建人：xiaolu
 * 创建时间：2020/5/27 16:20
 * 描述：
 */
public class Base64Util {

    /**
     * 将图片转化为 image 转化 base64
     *
     * @param imagepath
     * @return
     */
    public static String ImgToBase64Byte(String imagepath) {

        InputStream in = null;
        byte[] data = null;
        //读取图片字节数组
        try {
            //发送图片签压缩图片
            //commpressPicCycle(imagepath, 40, 0.9);
            in = new FileInputStream(imagepath);
            data = new byte[in.available()];
            in.read(data);
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);//返回Base64编码过的字节数组字符串
    }

    /**
     * Base64字符串转图片
     *
     * @param base64
     * @param imagename
     * @return
     */
    /**
     * Base64字符串转图片
     * @param base64
     * @param imagename
     * @return
     */
    public static boolean Base64ByteToImg(String base64, String imagename) {//对字节数组字符串进行Base64解码并生成图片
        if (base64 == null)//图像数据为空
            return false;


        if (base64.contains(",")){
            base64 = base64.substring(base64.indexOf(',')+ 1, base64.length() - 1);
        }

        BASE64Decoder decoder = new BASE64Decoder();
        try {
            //Base64解码
            byte[] b = decoder.decodeBuffer(base64);
            for (int i = 0; i < b.length; ++i) {
                if (b[i] < 0) {//调整异常数据
                    b[i] += 256;
                }
            }
            //生成jpeg图片
            File file = new File(imagename);
            if (!file.getParentFile().exists()) {
                file.getParentFile().mkdirs();
            }
            OutputStream out = new FileOutputStream(file);
            out.write(b);
            out.flush();
            out.close();
            return true;
        } catch (Exception e) {
            return false;
        }
    }


//

    /*public static void main(String[] args) {
     *//* String base64="{\"imagebase64\":\"";
        int i = base64.indexOf(',');
        String substring = base64.substring(i + 1, base64.length() - 1);
        System.out.println(substring);

        boolean b = Base64ByteToImg(substring, "D:\\aasdsad.jpg");*//*

        File file = new File("D:\\1\\1\\2\\20200531\\付英华.jpg");
//        人员白名单
        PersonnelWhiteList personnelWhiteList = new PersonnelWhiteList();
//        图片名称唯一标示
        personnelWhiteList.setImagename(UUID.randomUUID() + ".jpg");
//        图片base64
        String imagebase64 = "data:image/jpeg;base64,"+Base64Util.ImgToBase64Byte(file.getPath());
        personnelWhiteList.setImagebase64(imagebase64);
//        0 大门 1 大门+餐厅
        personnelWhiteList.setPower(1);
//        0 永久名单  1 临时名单
        personnelWhiteList.setListtype(0);
//        开始时间
        personnelWhiteList.setStartdate("2020-05-20");
//        结束时间
        personnelWhiteList.setEnddate("2020-06-30");
//        动作 0：新增 1：修改 2：删除 默认为 0
        personnelWhiteList.setAction(0);
//        13位时间戳
        personnelWhiteList.setTime(System.currentTimeMillis() + "");
        System.out.println(personnelWhiteList);


    }*/


}